package com.xqb.modules.service.impl;

import com.xqb.common.constants.MyConstants;
import com.xqb.common.utils.EmailService;
import com.xqb.modules.domain.po.InsReview;
import com.xqb.modules.service.MsgMessageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.mail.MessagingException;
import java.util.HashMap;
import java.util.Map;

/**
 * @Author: JinChen Zhu
 * @CreateTime: 2024-10-31  01:23
 */
@Service
public class MsgMessageServiceImpl implements MsgMessageService {
    @Autowired
    private EmailService emailService;

    /**
     * 发送机构审核消息
     *
     * @param ird 机构审核信息对象，包含审核结果、机构名称、审核ID、审核时间、审核失败原因、收件人邮箱等信息
     * @throws MessagingException 邮件发送异常
     */
    @Override
    public void sendInsReviewMsg(InsReview ird) throws MessagingException {
        // 创建一个模型对象，用于存储邮件模板所需的变量
        Map<String, Object> model = new HashMap<>();
        // 将平台名称添加到模型中
        model.put("platformName", MyConstants.PLATFORM_NAME);

        // 判断审核是否成功
        if (ird.getSuccess()) {
            // 如果审核成功，将机构名称添加到模型中
            model.put("name", ird.getName());
            // 将机构管理员名称添加到模型中
            model.put("adminName", ird.getAdminName());
            // 将审核ID添加到模型中
            model.put("reviewId", ird.getReviewId());
            // 将审核时间添加到模型中
            model.put("reviewTime", ird.getReviewTime());
            // 发送审核成功邮件
            emailService.sendEmail(ird.getToEmail(), MyConstants.PLATFORM_NAME + MyConstants.REVIEW_SUCCESS_SUBJECT, "email-templates/successTemplate.ftl", model);
        } else {
            // 如果审核失败，将失败原因添加到模型中
            model.put("reason", ird.getReason());
            // 发送审核失败邮件
            emailService.sendEmail(ird.getToEmail(), MyConstants.PLATFORM_NAME + MyConstants.REVIEW_FAIL_SUBJECT, "email-templates/failureTemplate.ftl", model);
        }
    }

}
